This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
library(readxl)
Electricity_Data_US <- read_excel('electricity_data_US.xls', sheet='electricity_data_US')
Electricity_Data_US_ts <- ts(Electricity_Data_US$'US_ALL_SECTORS (thousand megawatts hours)', frequency = 12, start = c(2001,1), names = c("Date", "US_ALL_SECTORS"))
Electricity_Data_US_ts
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct
## 2001 332493 282940 300707 278079 300492 327694 357614 370533 306929 294734
## 2002 319941 281826 302549 289848 307675 341023 381542 374586 331279 307059
## 2003 341989 299249 304317 285756 307545 328694 374396 381816 323136 306741
## 2004 346546 314280 308812 290560 327380 345085 377332 368439 335622 312450
## 2005 343121 298500 317458 289562 315062 363672 402274 404941 350218 316398
## 2006 328658 307333 318730 297858 330616 364260 410421 407763 332055 321567
## 2007 353531 323230 320471 303129 330203 362755 393226 421797 355394 332615
## 2008 362998 325106 324630 305865 325245 373109 402900 388987 338056 318547
## 2009 354993 300887 310603 289537 311306 347658 372542 381221 327401 307040
## 2010 360957 319735 312168 287800 327936 375759 409725 408884 346045 307921
## 2011 362872 313127 318710 302401 323628 367727 418693 406511 337931 308699
## 2012 339526 309389 309090 295229 336516 360825 414641 395700 334586 311652
## 2013 348967 309728 325399 299333 322156 356823 394846 385286 340941 314925
## 2014 377250 324344 331818 297625 324718 357838 385773 384335 339881 314516
## 2015 360449 334471 324186 294128 322081 362403 400412 392110 350115 312106
## 2016 352714 313680 304384 292889 316779 367776 411881 409695 351479 312940
## 2017 344325 291043 319329 295354 323439 358514 404425 384731 335908 318662
## 2018 373230 306894 321547 300756 338948 371886 411290 408028 356258 324932
## 2019 359509 315026 326657 296663 330423 352988 410038 401430 360518 320352
## 2020 341850 319550 309587 279583 304593 351745 409562 398280 333258 313531
## 2021 350796 326223 312285 292504 318859 373754 404749 413353 348201 319638
## 2022 378967 327767 325952
## Nov Dec
## 2001 278934 305496
## 2002 296290 324834
## 2003 297867 331680
## 2004 302101 341948
## 2005 306115 348101
## 2006 309159 336283
## 2007 314103 346290
## 2008 310046 343898
## 2009 296635 350507
## 2010 306010 362119
## 2011 304102 335740
## 2012 305976 334635
## 2013 314540 353021
## 2014 317489 337951
## 2015 300647 324421
## 2016 297056 345337
## 2017 308045 350408
## 2018 322369 342139
## 2019 315849 338402
## 2020 301250 344346
## 2021 315495 339684
## 2022
library(fpp)
## Loading required package: forecast
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Loading required package: fma
## Loading required package: expsmooth
## Loading required package: lmtest
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: tseries
library(fpp2)
## ── Attaching packages ────────────────────────────────────────────── fpp2 2.5 ──
## ✔ ggplot2 3.4.3
##
##
## Attaching package: 'fpp2'
## The following objects are masked from 'package:fpp':
##
## ausair, ausbeer, austa, austourists, debitcards, departures,
## elecequip, euretail, guinearice, oil, sunspotarea, usmelec
library(TTR)
attributes(Electricity_Data_US_ts)
## $tsp
## [1] 2001.000 2022.167 12.000
##
## $class
## [1] "ts"
plot(Electricity_Data_US_ts)
Acf(Electricity_Data_US_ts)
#take Mean of all available history
mean_forecast <- meanf(Electricity_Data_US_ts,36)
plot(mean_forecast)
# Naive
naive_forecast <- naive(Electricity_Data_US_ts,36)
plot(naive_forecast)
# Random Walk
rwf_forecast <- rwf(Electricity_Data_US_ts,36, drift=FALSE)
plot(rwf_forecast)
# Random Walk with Drift
rwf_forecast_drift <- rwf(Electricity_Data_US_ts,36, drift=TRUE)
plot(rwf_forecast_drift)
snaive_forecast <- snaive(Electricity_Data_US_ts,36)
plot(snaive_forecast)
MA3_forecast <- ma(Electricity_Data_US_ts,order=3)
plot(MA3_forecast)
MA6_forecast <- ma(Electricity_Data_US_ts,order=6)
plot(MA6_forecast)
MA12_forecast <- ma(Electricity_Data_US_ts,order=12)
plot(MA12_forecast)
MA18_forecast <- ma(Electricity_Data_US_ts,order=18)
plot(MA18_forecast)
MA36_forecast <- ma(Electricity_Data_US_ts,order=36)
plot(MA36_forecast)
MA72_forecast <- ma(Electricity_Data_US_ts,order=72)
plot(MA72_forecast)
plot(mean_forecast)
lines(naive_forecast$mean,col="red")
lines(rwf_forecast$mean,col="green")
lines(rwf_forecast_drift$mean,col="violet")
lines(snaive_forecast$mean,col="blue")
lines(MA6_forecast,col="darkred")
lines(MA12_forecast,col="cyan")
lines(MA18_forecast,col="purple")
lines(MA36_forecast,col="orange")
lines(MA72_forecast,col="darkgreen")
# what other attributes are there?
attributes(naive_forecast)
## $names
## [1] "method" "model" "lambda" "x" "fitted" "residuals"
## [7] "series" "mean" "level" "lower" "upper"
##
## $class
## [1] "forecast"
attributes(snaive_forecast)
## $names
## [1] "method" "model" "lambda" "x" "fitted" "residuals"
## [7] "series" "mean" "level" "lower" "upper"
##
## $class
## [1] "forecast"
ets_forecast <- ets(Electricity_Data_US_ts)
plot(ets_forecast)
attributes(ets_forecast)
## $names
## [1] "loglik" "aic" "bic" "aicc" "mse"
## [6] "amse" "fit" "residuals" "fitted" "states"
## [11] "par" "m" "method" "series" "components"
## [16] "call" "initstate" "sigma2" "x"
##
## $class
## [1] "ets"
ets_forecast$mse
## [1] 74587535
HW_forecast <- HoltWinters(Electricity_Data_US_ts)
HoltWinters(Electricity_Data_US_ts)
## Holt-Winters exponential smoothing with trend and additive seasonal component.
##
## Call:
## HoltWinters(x = Electricity_Data_US_ts)
##
## Smoothing parameters:
## alpha: 0.3902766
## beta : 0.01085984
## gamma: 0.331543
##
## Coefficients:
## [,1]
## a 354874.6578
## b 223.4292
## s1 -50275.8367
## s2 -20339.1656
## s3 21266.8941
## s4 63687.1146
## s5 57589.3653
## s6 331.7626
## s7 -28307.7701
## s8 -35421.2163
## s9 -3891.0857
## s10 14376.2408
## s11 -27411.4034
## s12 -28011.9778
attributes(HW_forecast)
## $names
## [1] "fitted" "x" "alpha" "beta" "gamma"
## [6] "coefficients" "seasonal" "SSE" "call"
##
## $class
## [1] "HoltWinters"
summary(HW_forecast)
## Length Class Mode
## fitted 972 mts numeric
## x 255 ts numeric
## alpha 1 -none- numeric
## beta 1 -none- numeric
## gamma 1 -none- numeric
## coefficients 14 -none- numeric
## seasonal 1 -none- character
## SSE 1 -none- numeric
## call 2 -none- call
plot(HW_forecast)
SSE_Simple <- HoltWinters(Electricity_Data_US_ts, beta=TRUE, gamma=TRUE)
attributes(SSE_Simple)
## $names
## [1] "fitted" "x" "alpha" "beta" "gamma"
## [6] "coefficients" "seasonal" "SSE" "call"
##
## $class
## [1] "HoltWinters"
SSE_Simple$SSE
## [1] 132840676529
plot(SSE_Simple)
SSE_Simple_2 <- HoltWinters(Electricity_Data_US_ts, beta=FALSE, gamma=TRUE)
attributes(SSE_Simple_2)
## $names
## [1] "fitted" "x" "alpha" "beta" "gamma"
## [6] "coefficients" "seasonal" "SSE" "call"
##
## $class
## [1] "HoltWinters"
SSE_Simple_2$SSE
## [1] 25755978737
plot(SSE_Simple_2)
SSE_Simple_3 <- HoltWinters(Electricity_Data_US_ts, beta=TRUE, gamma=FALSE)
attributes(SSE_Simple_3)
## $names
## [1] "fitted" "x" "alpha" "beta" "gamma"
## [6] "coefficients" "seasonal" "SSE" "call"
##
## $class
## [1] "HoltWinters"
SSE_Simple_3$SSE
## [1] 395769094686
plot(SSE_Simple_3)
accuracy(MA3_forecast, Electricity_Data_US_ts, h=12)
## ME RMSE MAE MPE MAPE ACF1 Theil's U
## Test set -62.89592 13318.94 11363.18 -0.3054734 3.388174 -0.2220107 0.4227245
accuracy(MA6_forecast, Electricity_Data_US_ts, h=12)
## ME RMSE MAE MPE MAPE ACF1 Theil's U
## Test set -102.0174 27587.94 23659.78 -0.7481517 6.960664 0.3994861 0.8629468
accuracy(MA12_forecast, Electricity_Data_US_ts, h=12)
## ME RMSE MAE MPE MAPE ACF1 Theil's U
## Test set 455.537 33368.27 27510.49 -0.7941443 8.033122 0.545415 1.01404
accuracy(MA18_forecast, Electricity_Data_US_ts, h=12)
## ME RMSE MAE MPE MAPE ACF1 Theil's U
## Test set -603.8902 35530.28 29054.47 -1.163674 8.51316 0.5882638 1.06695
accuracy(MA36_forecast, Electricity_Data_US_ts, h=12)
## ME RMSE MAE MPE MAPE ACF1 Theil's U
## Test set 628.4826 33683.51 27783.54 -0.7525422 8.090469 0.5479755 0.9695606
accuracy(MA72_forecast, Electricity_Data_US_ts, h=12)
## ME RMSE MAE MPE MAPE ACF1 Theil's U
## Test set 632.21 33554.61 27597.78 -0.7422381 8.021641 0.5502105 0.8789916
accuracy(mean_forecast)
## ME RMSE MAE MPE MAPE MASE
## Training set 1.758458e-11 34217.74 28000.58 -0.985932 8.221914 2.719387
## ACF1
## Training set 0.5730148
accuracy(naive_forecast)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -25.75197 31674.55 27003.3 -0.4384288 8.025504 2.622533 0.202647
accuracy(rwf_forecast)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -25.75197 31674.55 27003.3 -0.4384288 8.025504 2.622533 0.202647
accuracy(rwf_forecast_drift)
## ME RMSE MAE MPE MAPE MASE
## Training set -7.333694e-12 31674.54 27002.29 -0.4307069 8.02486 2.622434
## ACF1
## Training set 0.202647
accuracy(snaive_forecast)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 1737.77 12937.34 10296.65 0.4518986 3.019937 1 0.4693802
forecast_ets_hw <- forecast(HW_forecast, h=12)
accuracy(forecast_ets_hw)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -741.1512 9778.629 7875.2 -0.3154225 2.331722 0.7648313 0.09550884
forecast_ets_sse_simple_hw <- forecast(SSE_Simple, h=12)
accuracy(forecast_ets_sse_simple_hw)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 72.13175 23380.96 18023.74 -0.1438919 5.327583 1.750447 0.2449821
forecast_ets_sse_simple_2_hw <- forecast(SSE_Simple_2, h=12)
accuracy(forecast_ets_sse_simple_2_hw)
## ME RMSE MAE MPE MAPE MASE
## Training set 250.8219 10295.23 8244.493 0.005103653 2.432738 0.8006967
## ACF1
## Training set -0.166648
forecast_ets_sse_simple_3_hw <- forecast(SSE_Simple_3, h=12)
accuracy(forecast_ets_sse_simple_3_hw)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 170.2119 39551.29 33713.86 0.2144175 10.14931 3.274255 -0.1017875
training_set = window(Electricity_Data_US_ts, start = c(2001,1), end=c(2018,2))
test_set = window(Electricity_Data_US_ts, start = c(2018,3), end=c(2022,3))
forecast_ets_hw <- forecast(HoltWinters(training_set), h=48)
accuracy(forecast_ets_hw, test_set, h=48)
## ME RMSE MAE MPE MAPE MASE
## Training set -867.6619 9899.848 8014.994 -0.3440075 2.383951 0.7819938
## Test set -5093.5139 11819.418 9256.124 -1.6183754 2.790274 0.9030864
## ACF1 Theil's U
## Training set 0.1142370 NA
## Test set 0.3821497 0.3920909
accuracy(naive(training_set,h=48), test_set)
## ME RMSE MAE MPE MAPE MASE
## Training set -124.8732 31518.74 26944.08 -0.4700109 8.047214 2.628836
## Test set 35927.2083 50520.87 38677.83 9.5585885 10.508863 3.773656
## ACF1 Theil's U
## Training set 0.1935375 NA
## Test set 0.5736193 1.475309
accuracy(rwf(training_set,h=48), test_set)
## ME RMSE MAE MPE MAPE MASE
## Training set -124.8732 31518.74 26944.08 -0.4700109 8.047214 2.628836
## Test set 35927.2083 50520.87 38677.83 9.5585885 10.508863 3.773656
## ACF1 Theil's U
## Training set 0.1935375 NA
## Test set 0.5736193 1.475309
accuracy(snaive(training_set,h=48), test_set)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 1764.402 12982.25 10249.43 0.4685888 3.000859 1.000000 0.4905627
## Test set 2909.625 13147.75 10838.79 0.7180272 3.138524 1.057502 0.2120350
## Theil's U
## Training set NA
## Test set 0.3989327
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.